package com.falcon.core.utils;

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @author zongf
 * @date 2025-02-20
 **/
public class UriUtil {

    /** 会有一定的冲突，但是概率基本为0
     * @param url
     * @return 唯一id
     */
    public static long toUniqueId(String url) {
        try {
            // 获取 SHA - 256 消息摘要实例
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            // 计算 URL 的哈希值
            byte[] hash = digest.digest(url.getBytes(StandardCharsets.UTF_8));
            // 将字节数组转换为 BigInteger
            BigInteger bigInt = new BigInteger(1, hash);
            // 取低 64 位作为长整型 ID
            return bigInt.longValue() & Long.MAX_VALUE;
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
}
